¿Es posible actualizar una columna (automáticamente) con "current_timestamp" en PostgreSQL usando " Generated Columns ", cada vez que se actualiza la fila?
En este momento, estoy usando el activador para actualizar el campo de auditoría last_update_date . Pero estoy planeando cambiar a la columna generada
ALTER TABLE test ADD COLUMN last_update_date timestamp without time zone GENERATED ALWAYS AS (current_timestamp) STORED;Obteniendo error al alterar la columna
ERROR: generation expression is not immutableNo, eso no funcionará, por el motivo especificado en el error.
Las funciones utilizadas en las columnas generadas siempre deben devolver el mismo valor para los mismos argumentos, es decir, depender únicamente de la fila de la base de datos actual. current_timestamp obviamente no es de ese tipo.
Si PostgreSQL permitiera el uso de tales funciones en columnas generadas, entonces el valor de la columna cambiaría si la base de datos se restaura desde un pg_dump , por ejemplo.
Use un disparador BEFORE INSERT OR UPDATE para este propósito.